// let str:string = '1111'

// let flag:boolean = false

// flag=true

// enum Flag{success=1,error = -1}

// const f:Flag = Flag.success
// console.log(f)

// enum num{
//   a,b,c,d,e
// }

// function run():string {

//   return '111'
// }
// run()

// let aa:number|undefined
// aa = 12

// console.log(aa)

// let bb:never

// bb = (() => {
//   throw new Error('err');
// })()

//方法函数

function aa(): string {
  return '1111';
}

// 匿名函数

const func = function (): number {
  return 12;
};

// ts中函数 传参

function userInfo(name: string, age: number): string {
  return `${name}---${age}`;
}

// console.log(userInfo('jiang',22))

const func2 = (a: number, b: number): number => {
  return a + b;
};

// console.log(func2(3,5.11))

// 方法可选参数  ? 配置可选参数
const func3 = (a: number, b?: number): number => {
  if (b) {
    return a + b;
  } else {
    return a * a;
  }
};
// console.log(func3(20, 11));

// 默认参数
const func4 = (a: number, b: number = 30): number => {
  return a + b;
};

// console.log(func4(12, 90));

// 多参函数  ...运算符

const func5 = (...result: Array<number>): number => {
  let sum: number = 0;
  for (const key in result) {
    sum += result[key];
  }
  return sum;
};
// console.log(func5(1, 2, 3, 45, 6, 5, 7, 8, 89));

// ts 中函数方法的重载

function func6(name: string): string;
function func6(name: string, age: number): string;
function func6(name: any, age?: any): any {
  if (age) {
    return `${name}===${age}`;
  } else {
    return `${name}`;
  }
}

// console.log(func6('zs'));
